home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / t_os / io5 / io5main.c < prev    next >
Text File  |  1993-11-30  |  4KB  |  174 lines

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <winb.h>
  5. #include <te.h>
  6. #include <fntb.h>
  7. #include <gui.h>
  8.  
  9.  
  10. char    *guiEgbPtr ;            /*    EGB のワークアドレス    */
  11.  
  12. int    backid = -1 ;
  13. int    menuid = -1 ;
  14. int    mitemid = -1 ;
  15. int    submenuid = -1 ;
  16. int    submitem[4] = -1 ;
  17. int    dialogid = -1 ;
  18. int    dialogmessageid[5] = -1 ;
  19. int    numboxid1 = -1 ;
  20. int    numboxid2 = -1 ;
  21. int    numboxid3 = -1 ;
  22. int    execdialogid = -1 ;
  23. int    resultdialog = -1 ;
  24. int    textid = -1 ;
  25. int    resulttitle = -1 ;
  26. int    Message_00d8 = -1 ;
  27. int    DButton_00da = -1 ;
  28. int    Message_00dc = -1 ;
  29. int button = -1;
  30.  
  31. char    first = 'y';
  32.  
  33. void main()
  34. {
  35.     extern int APL_init() ;
  36.  
  37.     /*    致命的エラーハンドラの登録    */
  38.     FM_SetVector() ;
  39.  
  40.     /*    初期化処理    */
  41.     if (MMI_Open( NULL ) == NOERR)
  42.     {
  43.         /*    初期化に成功すればメインループに入る.    */
  44.         if (APL_init() == NOERR)
  45.             MMI_ExecSystem() ;
  46.     }
  47.  
  48.     /*    終了処理    */
  49.     MMI_Close() ;
  50.  
  51.     /*    致命的エラーハンドラの復帰    */
  52.     FM_ResetVector() ;
  53. }
  54.  
  55. int APL_init()
  56. {
  57.     extern MMIINIT    initDataIO5 ;
  58.     extern MMIINIT    initDataIO5DIALG ;
  59.     extern MMIINIT    initDataIO5TEXT ;
  60.  
  61.     register int    ret ;
  62.  
  63.     /*    EGB ワークアドレスの取得.    */
  64.     guiEgbPtr = MMI_GetEgbPtr() ;
  65.  
  66.     /*    ハイパ型部品の初期化            */
  67.     if ((ret = MMI_initHyper()) < 0)
  68.         return ret ;
  69.     /*    ダイアログ型部品の初期化        */
  70.     if ((ret = MMI_initDialogL40()) < 0)
  71.         return ret ;
  72.     /*    メッセージ型部品の初期化        */
  73.     if ((ret = MMI_initMessageL40()) < 0)
  74.         return ret ;
  75.     /*    メニュー型部品の初期化            */
  76.     if ((ret = MMI_initMenuL40()) < 0)
  77.         return ret ;
  78.     /*    ボタン型部品の初期化            */
  79.     if ((ret = MMI_initButtonL40()) < 0)
  80.         return ret ;
  81.     /*    ドロウボタン型部品の初期化        */
  82.     if ((ret = MMI_initDrawButtonL40()) < 0)
  83.         return ret ;
  84.     /*    アイコンボタン型部品の初期化    */
  85.     if ((ret = MMI_initIconL40()) < 0)
  86.         return ret ;
  87.     /*    メニューアイテム型部品の初期化    */
  88.     if ((ret = MMI_initMenuItemL40()) < 0)
  89.         return ret ;
  90.     /*    テキスト型部品の初期化            */
  91.     if ((ret = MMI_initTextL40()) < 0)
  92.         return ret ;
  93.     /*    数値入力型部品の初期化            */
  94.     if ((ret = MMI_initNumBoxL40()) < 0)
  95.         return ret ;
  96.  
  97.     /*    背景データの初期化                        */
  98.  
  99.     /*    データの登録        */
  100.     if ((ret = MMI_Init(&initDataIO5)) < 0)
  101.         return ret ;
  102.  
  103.     if ((ret = MMI_Init(&initDataIO5DIALG)) < 0)
  104.         return ret ;
  105.  
  106.     if ((ret = MMI_Init(&initDataIO5TEXT)) < 0)
  107.         return ret ;
  108.  
  109.     /*    背景を表示する                            */
  110.     MMI_SendMessage(MMI_GetBaseObj(), MM_SHOW, 0) ;
  111.  
  112.     return NOERR ;
  113. }
  114.  
  115. /*    initDataIO5:submitem[1]:MJ_MITEML40の呼び出し関数    */
  116. int    procfunc(kobj, messId, argc, pev, trigger)
  117. int        kobj ;
  118. int        messId ;
  119. int        argc ;
  120. EVENT    *pev ;
  121. int        trigger ;
  122. {
  123.     if(first == 'n'){
  124.         MMI_SendMessage(resultdialog,MM_ERASE,0);
  125.         MMI_SendMessage(resultdialog,MM_DETACH,0);
  126.     }
  127.     MMI_SendMessage(submitem[1],MM_ENABLE,1,FALSE);    
  128.     MMI_SendMessage(dialogid,MM_ATTACH,1,MMI_GetBaseObj());
  129.     MMI_SendMessage(dialogid,MM_SHOW,0);
  130.     return NOERR ;
  131. }
  132.  
  133. /*    initDataIO5:submitem[3]:MJ_MITEML40の呼び出し関数    */
  134. int    termfunc(kobj, messId, argc, pev, trigger)
  135. int        kobj ;
  136. int        messId ;
  137. int        argc ;
  138. EVENT    *pev ;
  139. int        trigger ;
  140. {
  141.     MMI_SendMessage(submitem[1],MM_ENABLE,1,TRUE);
  142.     MMI_SetHaltFlag(TRUE);
  143.     return NOERR ;
  144. }
  145.  
  146. /*    initDataIO5DIALG:execdialogid:MJ_DBUTTONL40の呼び出し関数    */
  147. int    execfunc(kobj, messId, argc, pev, trigger)
  148. int        kobj ;
  149. int        messId ;
  150. int        argc ;
  151. EVENT    *pev ;
  152. int        trigger ;
  153. {
  154.     int    var1,var2,var3,min,max,delta,ptColum,ans;
  155.     static char chr[80];
  156.  
  157.     MMI_SendMessage(numboxid1,MM_GETNUMBOX,5,&var1,&min,&max,&delta,&ptColum);
  158.     MMI_SendMessage(numboxid2,MM_GETNUMBOX,5,&var2,&min,&max,&delta,&ptColum);
  159.     MMI_SendMessage(numboxid3,MM_GETNUMBOX,5,&var3,&min,&max,&delta,&ptColum);
  160.     ans = ( 70*var1 + 21*var2 + 15*var3 ) % 105;
  161.     if( ans == 0 ) ans = 105;
  162.     strcat(chr,"                              ");
  163.     sprintf(chr,"%3d",ans);
  164.     MMI_SendMessage(textid,MM_SETTEXT,3,chr,3,FALSE);
  165.     MMI_SendMessage(textid,MM_SHOW,0);
  166.     MMI_SendMessage(dialogid,MM_ERASE,0);
  167.     MMI_SendMessage(dialogid,MM_DETACH,0);
  168.     MMI_SendMessage(resultdialog,MM_ATTACH,1,MMI_GetBaseObj());
  169.     MMI_SendMessage(resultdialog,MM_SHOW,0);
  170.     first = 'n';
  171.     return NOERR ;
  172. }
  173.  
  174.